package pe.com.bbva.ge.persistencia.orm;

import java.util.List;
import java.util.Map;

import pe.com.bbva.ge.domain.base.Identificador;
import pe.com.bbva.ge.domain.configuracion.Atm;
import pe.com.bbva.ge.domain.configuracion.Casetera;
import pe.com.bbva.ge.domain.configuracion.Denominacion;
import pe.com.bbva.ge.domain.configuracion.Lista;
import pe.com.bbva.ge.domain.configuracion.Posicion;
import pe.com.bbva.ge.domain.configuracion.Regla;
import pe.com.bbva.ge.domain.configuracion.Transportadora;
import pe.com.bbva.ge.domain.configuracion.Valor;
import pe.com.bbva.ge.domain.quartz.QrtzCronTriggers;
import pe.com.bbva.ge.domain.quartz.QrtzJobDetails;
import pe.com.bbva.ge.domain.quartz.QrtzTriggers;
import pe.com.bbva.ge.domain.seguridad.Membresia;
import pe.com.bbva.ge.domain.seguridad.Opcion;
import pe.com.bbva.ge.domain.seguridad.Permiso;
import pe.com.bbva.ge.domain.seguridad.Rol;
import pe.com.bbva.ge.domain.solicitud.TipoSolicitud;
import pe.com.bbva.ge.domain.configuracion.Parametro;

public interface ConfiguracionORM extends BaseORM {

	List<Valor> obtenerValores(String codigoLista);
	List<Denominacion> obtenerDenominaciones(Valor moneda, Valor tipo);
	Valor obtenerValor(String codigoLista, String codigoValor);
	List<Posicion> obtenerPosicones(Valor TipoOrigenDestino);
	List<TipoSolicitud> obtenerTipoSolicitud();
	List<Atm> obtenerListaATM();
	List<Casetera> obtenerListaCaseteras(Atm atm);
	List<Transportadora> obtenerListaTransportadoras();
	List<Lista> buscarListas(Lista lista);
	List<Valor> buscarValores(Valor valor);
	Parametro obtenerParametroxCodigo(String codigo);
	List<Opcion> buscarOpciones(Opcion opcion);
	Map<String, List<Opcion>> listarOpciones();
	List<Parametro> buscarParametros(Parametro parametro);
	List<Rol> buscarRoles(Rol rol);
	List<Permiso> obtenerPermisosXRol(Long idRol, boolean estadoActivo);
	List<Rol> obtenerRolesHijo(Rol rol);
	List<Membresia> buscarMembresias(Membresia membresia);

	// Quartz
	List<QrtzCronTriggers> buscarCronTriggers(QrtzCronTriggers qrtzCronTriggers);

	List<QrtzJobDetails> buscarJobDetails(QrtzJobDetails qrtzJobDetails);

	List<QrtzTriggers> buscarTriggers(QrtzTriggers qrtzTriggers);
	
	<Entidad> Entidad obtenerEntidadPorCodigo(Identificador identificador, Class<Entidad> clase);
	List<Atm> obtenerAtmsPorProveedor(Posicion posicionDestino);
	List<Casetera> obtenerCaseterasPorProveedor(Posicion posicionDestino);
	List<Regla> buscarReglas(Regla regla);
}
